home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / gfx / x11 / xmountains.lha / src / print_alg.c < prev    next >
C/C++ Source or Header  |  2002-10-28  |  2KB  |  51 lines

  1. #include <stdio.h>
  2.  
  3. #define P(A) fprintf(stderr,"%s\n",A)
  4. void print_algorithm()
  5. {
  6. P("This program uses a modified form the mid-point displacement algorithm");
  7. P("");
  8. P("The mid-point displacement algorithm is a recursive algorithm, each iteration");
  9. P("doubles the resolution of the grid. This is done in 2 stages.");
  10. P("");
  11. P("A        B                  A           B                A     F     B");
  12. P("               stage1                        stage2");
  13. P("              --------->          E         -------->    G     E     H");
  14. P("");
  15. P("C        D                  C           D                C     I     D");
  16. P("");
  17. P("The new points are generated by taking an average of the surrounding points");
  18. P("and adding a random offset.");
  19. P("The modifications to the standard algorith are as follows:");
  20. P("There are three optional regeneration steps to reduce \"creasing\". A");
  21. P("regeneration step recalculates the height of existing points using an");
  22. P("average and offset from a newer generation of points. The three");
  23. P("regeneration steps are:");
  24. P("  rg1:  recalculate corner points (A,B,C,D) from the midpoints (E)");
  25. P("        after the stage1 update.");
  26. P("  rg2:  recalculate midpoints (E) from the edge points (F,G,H,I)");
  27. P("        after the stage2 update");
  28. P("  rg3:  recalculate corner points (A,B,C,D) from the edge points (F,G,H,I)");
  29. P("        after the stage2 update");
  30. P("The regeneration stages are turned on by the smoothing parameter (-s flag)");
  31. P("");
  32. P("  flag    rg3   rg2   rg1");
  33. P("  0       off   off   off");
  34. P("  1       on    off   off");
  35. P("  2       off   on    off");
  36. P("  3       on    on    off");
  37. P("  4       off   off   on");
  38. P("  5       on    off   on");
  39. P("  6       off   on    on");
  40. P("  7       on    on    on");
  41. P("");
  42. P("When performing the regeneration steps the random offset is added to a");
  43. P("weighted average of the previous value of the point and a the average of");
  44. P("the new points. The weighting factors are controlled by the -X and -Y flags.");
  45. P("");
  46. P("The -x flag (cross update) controls whether the midpoints (E) are included");
  47. P("in the average when performing the stage2 update or if only the corner");
  48. P("points are used.");
  49. P("");
  50. }
  51.